package com.webermagem.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

import com.webermagem.model.Diagnostico;
import com.webermagem.model.Intervencao;
import com.webermagem.model.Leito;
import com.webermagem.model.Paciente;
import com.webermagem.model.PacienteSintoma;
import com.webermagem.model.Perfil;
import com.webermagem.model.Sintoma;
import com.webermagem.model.TipoSintoma;
import com.webermagem.model.Usuario;
import com.webermagem.model.UsuarioSessao;

public class HibernateUtil {

	private static SessionFactory sessionFactory;

	private HibernateUtil() {
	}

	public static SessionFactory getSessionFactory() {

		AnnotationConfiguration ac = new AnnotationConfiguration();

		if (sessionFactory == null) {
			try {
				// Create the SessionFactory from standard (hibernate.cfg.xml)
				// config file.

					ac.addAnnotatedClass(UsuarioSessao.class);
					ac.addAnnotatedClass(Usuario.class);
					ac.addAnnotatedClass(Perfil.class);
					ac.addAnnotatedClass(TipoSintoma.class);
					ac.addAnnotatedClass(Sintoma.class);
					ac.addAnnotatedClass(PacienteSintoma.class);
					ac.addAnnotatedClass(Paciente.class);
					ac.addAnnotatedClass(Leito.class);
					ac.addAnnotatedClass(Diagnostico.class);
//					ac.addAnnotatedClass(PacienteDiagnostico.class);
					ac.addAnnotatedClass(Intervencao.class);
//					ac.addAnnotatedClass(PacienteIntervencoes.class);

				sessionFactory = ac.configure().buildSessionFactory();
				
			} catch (Throwable ex) {
				System.err.println("Initial SessionFactory creation failed." + ex);
				throw new ExceptionInInitializerError(ex);
			}
			return sessionFactory;
		} else {
			return sessionFactory;
		}
	}

}
